#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/usb.h>
#include <linux/fs.h>


#include <linux/sched.h>
#include <linux/errno.h>
#include <linux/slab.h>
#include <linux/kthread.h>

#include <linux/utsname.h>
#include <uapi/linux/cciss_defs.h>

#include <scsi/scsi.h>
#include <scsi/scsi_cmnd.h>
#include <scsi/scsi_device.h>

#include <linux/uaccess.h>

#include <linux/device.h>


#include <linux/usb/storage.h>
#include <scsi/scsi_proto.h>




// USB 存储设备的 Probe 函数
static int usb_storage_probe(struct usb_interface *interface, const struct usb_device_id *id)
{
    pr_info("USB storage device connected\n");

    // 你可以在这里添加初始化代码，比如注册字符设备、分配内存等
    return 0;
}

// USB 存储设备的 Disconnect 函数
static void usb_storage_disconnect(struct usb_interface *interface)
{
    pr_info("USB storage device disconnected\n");

    // 在这里进行资源清理，如释放内存、注销设备等
}

static struct usb_device_id my_id_table[] = { { USB_INTERFACE_INFO(
USB_CLASS_MASS_STORAGE,
USB_SC_SCSI, USB_PR_BULK) }, { } };



MODULE_DEVICE_TABLE(usb, my_id_table);

static struct usb_driver my_usbdriver = { .name = "andy_usbdriver", .probe =
		usb_storage_probe, .disconnect = usb_storage_disconnect, .id_table = my_id_table, };

module_usb_driver( my_usbdriver);

MODULE_LICENSE("GPL");
MODULE_AUTHOR("Andy");
